6 research outputs found

    Lightweight Multilingual Software Analysis

    Full text link
    Developer preferences, language capabilities and the persistence of older languages contribute to the trend that large software codebases are often multilingual, that is, written in more than one computer language. While developers can leverage monolingual software development tools to build software components, companies are faced with the problem of managing the resultant large, multilingual codebases to address issues with security, efficiency, and quality metrics. The key challenge is to address the opaque nature of the language interoperability interface: one language calling procedures in a second (which may call a third, or even back to the first), resulting in a potentially tangled, inefficient and insecure codebase. An architecture is proposed for lightweight static analysis of large multilingual codebases: the MLSA architecture. Its modular and table-oriented structure addresses the open-ended nature of multiple languages and language interoperability APIs. We focus here as an application on the construction of call-graphs that capture both inter-language and intra-language calls. The algorithms for extracting multilingual call-graphs from codebases are presented, and several examples of multilingual software engineering analysis are discussed. The state of the implementation and testing of MLSA is presented, and the implications for future work are discussed.Comment: 15 page

    Lightweight Call-Graph Construction for Multilingual Software Analysis

    Full text link
    Analysis of multilingual codebases is a topic of increasing importance. In prior work, we have proposed the MLSA (MultiLingual Software Analysis) architecture, an approach to the lightweight analysis of multilingual codebases, and have shown how it can be used to address the challenge of constructing a single call graph from multilingual software with mutual calls. This paper addresses the challenge of constructing monolingual call graphs in a lightweight manner (consistent with the objective of MLSA) which nonetheless yields sufficient information for resolving language interoperability calls. A novel approach is proposed which leverages information from a compiler-generated AST to provide the quality of call graph necessary, while the program itself is written using an Island Grammar that parses the AST providing the lightweight aspect necessary. Performance results are presented for a C/C++ implementation of the approach, PAIGE (Parsing AST using Island Grammar Call Graph Emitter) showing that despite its lightweight nature, it outperforms Doxgen, is robust to changes in the (Clang) AST, and is not restricted to C/C++.Comment: 10 page

    Lightweight Multilingual Software Analysis

    No full text
    Developer preferences, language capabilities and the persistence of older languages contribute to the trend that large software codebases are often multilingual – that is, written in more than one computer language. While developers can leverage monolingual software development tools to build software components, companies are faced with the problem of managing the resultant large, multilingual codebases to address issues with security, efficiency, and quality metrics. The key challenge is to address the opaque nature of the language interoperability interface: one language calling procedures in a second (which may call a third, or even back to the first), resulting in a potentially tangled, inefficient and insecure codebase. An architecture is proposed for lightweight static analysis of large multilingual codebases – the MLSA architecture. Its modular and table-oriented structure addresses the open-ended nature of multiple languages and language interoperability APIs. We focus here as an application on the construction of call-graphs that capture both inter-language and intra-language calls. The algorithms for extracting multilingual call-graphs from codebases are presented, and several examples of multilingual software engineering analysis are discussed. The state of the implementation and testing of MLSA is presented, and the implications for future work are discussed

    Lightweight Multilingual Software Analysis

    No full text
    Large software systems can often be multilingual – that is, software systems are written in more than one language. However, many popular software engineering tools are monolingual by nature. Nonetheless, companies are faced with the need to manage their large, multilingual codebases to address issues with security, efficiency, and quality metrics. This paper presents a novel lightweight approach to multilingual software analysis – MLSA. The approach is modular and focused on efficient static analysis computation for large codebases. One topic is addressed in detail – the generation of multilingual call graphs to identify language boundary problems in multilingual code. The algorithm for extracting multilingual call graphs from C/Python codebases is described, and an example is presented. Finally, the state of current testing on a database of programs downloaded from the internet is detailed and the implications for future work are discussed

    The emerging science of linked plant-fungal invasions

    Get PDF
    Invasions of alien plants are typically studied as invasions of individual species, yet interactions between plants and symbiotic fungi (mutualists and potential pathogens) affect plant survival, physiological traits, and reproduction and hence invasion success. Studies show that plant–fungal associations are frequently key drivers of plant invasion success and impact, but clear conceptual frameworks and integration across studies are needed to move beyond a series of case studies towards a more predictive understanding. Here, we consider linked plant–fungal invasions from the perspective of plant and fungal origin, simplified to the least complex representations or ‘motifs’. By characterizing these interaction motifs, parallels in invasion processes between pathogen and mutualist fungi become clear, although the outcomes are often opposite in effect. These interaction motifs provide hypotheses for fungal-driven dynamics behind observed plant invasion trajectories. In some situations, the effects of plant–fungal interactions are inconsistent or negligible. Variability in when and where different interaction motifs matter may be driven by specificity in the plant–fungal interaction, the size of the effect of the symbiosis (negative to positive) on plants and the dependence (obligate to facultative) of the plant−fungal interaction. Linked plant–fungal invasions can transform communities and ecosystem function, with potential for persistent legacies preventing ecosystem restoration

    The emerging science of linked plant-fungal invasions

    No full text
    corecore